!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define("rb_wixui.thunderbolt[GoogleMap]",["react","reactDOM"],t):"object"==typeof exports?exports["rb_wixui.thunderbolt[GoogleMap]"]=t(require("react"),require("react-dom")):e["rb_wixui.thunderbolt[GoogleMap]"]=t(e.React,e.ReactDOM)}("undefined"!=typeof self?self:this,function(e,t){return function(){var n={oGPa:function(e){"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var o,r,a;if(Array.isArray(t)){if((o=t.length)!=n.length)return!1;for(r=o;0!==r--;)if(!e(t[r],n[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((o=(a=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(r=o;0!==r--;)if(!Object.prototype.hasOwnProperty.call(n,a[r]))return!1;for(r=o;0!==r--;){var l=a[r];if(!e(t[l],n[l]))return!1}return!0}return t!=t&&n!=n}},"Xdf/":function(t){"use strict";t.exports=e},NUjG:function(e){"use strict";e.exports=t},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t"undefined"!=typeof window,c=e=>Object.entries(e).reduce((e,[t,n])=>(t.includes("data-")&&(e[t]=n),e),{});const u="wixui-",d=(e,...t)=>{const n=[];return e&&n.push(`${u}${e}`),t.forEach(e=>{e&&(n.push(`${u}${e}`),n.push(e))}),n.join(" ")};const p=e=>e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),m=(((e,t,n=[])=>{e.reduce((e,t)=>({...e,[t]:!0}),{}),n.length})(["isSocialElementsBlocked"],e=>{let{isSocialElementsBlocked:t}=e;return t?"WithConsentWrapper":void 0}),e=>({consentPolicy:e.currentConsentPolicy,openSettingModal:()=>e.openSettingModal([])}));var f={root:"google-map"};function g(){const e=n.useRef([]);return[n.useCallback(()=>new Promise(t=>e.current.push(t)),[]),n.useCallback(t=>{e.current.forEach(e=>e(t)),e.current.length=0},[])]}const h=(e,t)=>{if(e||t)return t?{path:e,fillColor:t,strokeColor:t,fillOpacity:1,scale:.5}:(e=>{if(e&&e.endsWith(".webp"))try{const t=e.match(/media\/[^/]+/)[0].split(".")[1];e=e.replace(/.webp$/,"."+t)}catch(e){}return e})(e)},v=(e,t)=>e.map(e=>({...e,icon:h(e.pinIcon,e.pinColor)||t&&h(t.pinIcon,null==t?void 0:t.pinColor)}));var y="load",b="message",C="SET_INITIAL_LOCATIONS",E="SET_CENTER",M="CENTER_UPDATED",w="SET_ZOOM",k="ZOOM_UPDATED",S="MARKER_CLICKED",O="MAP_CLICKED",L="GET_MARKERS",I="MARKERS",T="FIT_BOUNDS",P="MAP_IDLE",N="OPEN_INFO_WINDOW",_="TILES_LOADED",x="SET_MARKER_ICON",R="SET_MARKER_ICON_FINISHED",A="SET_DIRECTION";const D=["iw","ar","ur","fa"];function F(e,t,o){let{mapData:r,language:a,isEditorMode:l}=t,{onUpdateZoom:i,onUpdateCenter:c,onMarkerClicked:u,onMapClicked:d}=o;const p=(0,n.useRef)([]),m=(0,n.useRef)(null),f=(0,n.useMemo)(()=>{var e,t,n,o;return void 0!==r.defaultLocation?{pinIcon:null!=(e=null==(t=r.locations[r.defaultLocation])?void 0:t.pinIcon)?e:"",pinColor:null!=(n=null==(o=r.locations[r.defaultLocation])?void 0:o.pinColor)?n:""}:void 0},[r.defaultLocation,r.locations]),[h,F]=g(),[z,B]=g(),[j,G]=g(),[Z,H]=g(),[W,U]=g(),[V,J]=g(),[K,$]=g(),[q,Y]=(0,n.useState)(!1),Q=(e,t)=>{const n=m.current;return v(n||e,t)},X=(0,n.useMemo)(()=>({...r,locations:Q(r.locations,f)}),[r,f]),ee=function(e,t){void 0===t&&(t=null);const o=(0,n.useRef)(t);return(0,n.useEffect)(()=>{o.current=e},[e]),o.current}(X),te={[M]:e=>null==c?void 0:c(e),[k]:e=>null==i?void 0:i({zoom:e}),[S]:e=>null==u?void 0:u({type:"markerClicked",...e}),[O]:e=>{let{longitude:t,latitude:n,...o}=e;return null==d?void 0:d({type:"mapClicked",location:{longitude:t,latitude:n},...o})},[I]:e=>F(e),[P]:()=>{const e=p.current.shift();null==e||e()},[_]:()=>{q||Y(!0)},[R]:()=>$()},ne={[y]:e=>{let{_sendMessage:t}=e;t({type:C,data:JSON.stringify({...r,locations:Q(r.locations)})},{forceSend:!0}),t({type:A,data:JSON.stringify({direction:D.includes(a)?"rtl":"ltr"})})},[b]:e=>{let{event:t}=e;if("string"==typeof t.payload){var n;const{type:e,data:o}=JSON.parse(t.payload);null==(n=te[e])||n.call(te,o)}}},[oe,re]=function(e){let{reducer:t=()=>({}),iframeLoaded:o}=e;const r=(0,n.useRef)([]),a=(0,n.useRef)(void 0),l=(0,n.useRef)(void 0),i=(0,n.useRef)(void 0),c=(0,n.useCallback)((e,t)=>{if(a.current&&o||null!=t&&t.forceSend){var n;const t=null==(n=a.current)?void 0:n.contentWindow;return void(null==t||t.postMessage(e,"*"))}if(!a.current||!l.current||!1===o)return void r.current.push(e);const i=a.current.contentWindow;null==i||i.postMessage(e,"*")},[o]),u=(0,n.useCallback)(()=>{0!==r.current.length&&!1!==o&&(r.current.forEach(e=>c(e)),r.current=[])},[c,o]),d=(0,n.useCallback)(e=>{if(i.current&&(i.current(),i.current=void 0),!e)return;const n=()=>{l.current=!0,u(),t({type:"load"},c)};e.addEventListener("load",n),a.current=e,i.current=()=>{e.removeEventListener("load",n)}},[t,c,u]);return(0,n.useEffect)(()=>{o&&u()},[o,u]),(0,n.useEffect)(()=>{if(!s())return;const e=e=>{var n;e.source&&e.source!==(null==(n=a.current)?void 0:n.contentWindow)||t({type:"message",payload:e.data},c)};return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t,c]),[d,c]}({reducer:(e,t)=>{var n;return null==(n=ne[e.type])?void 0:n.call(ne,{event:e,_sendMessage:t})},iframeLoaded:q});return(0,n.useImperativeHandle)(e,()=>({setMapCenter:(e,t)=>{const n=z();return re({type:E,data:JSON.stringify({longitude:e,latitude:t})}),p.current.push(B),n},fitBounds:e=>{let{north:t,east:n,west:o,south:r}=e;const a=Z();return re({type:T,data:JSON.stringify({north:t,east:n,west:o,south:r})}),p.current.push(H),a},setMarkerIcon:e=>{let{locations:t,coordinates:n,iconOptions:o}=e;const r=K();return m.current=t,re({type:x,data:JSON.stringify({...n,iconOptions:o})}),r},setMapZoom:e=>{const t=j();return re({type:w,data:e}),p.current.push(G),t},getVisibleMarkers:()=>{const e=h();return re({type:L}),e},openInfoWindow:e=>{if(!X.showDirectionsLink){const t=V();return re({type:N,data:JSON.stringify({locationIndex:e})}),p.current.push(J),t}return new Promise(e=>e())},setMarkers:(e,t)=>{const n=W();return m.current=e,re(JSON.stringify({...X,locations:v(e,f),openInfoWindow:null==t?void 0:t.openInfoWindow})),p.current.push(U),n}})),(0,n.useEffect)(()=>{if(!q||!l)return;const e=!!ee&&(t=X.locations,n=ee.locations,t.length===n.length&&t.every((e,t)=>{const o=Object.keys(e);return o.length===Object.keys(n[t]).length&&o.every(o=>"locationLinkAttributes"===o||e[o]===n[t][o])}));var t,n;re(JSON.stringify({...X,locations:Q(X.locations,f),shouldKeepMarkers:e}))},[X,re,f,q,ee,l]),[oe]}var z={GoogleMapSkin:"GRu5Ra",googleMapSkin:"GRu5Ra",mapContainer:"TD54YK",GoogleMapDefault:"H7BYNf",googleMapDefault:"H7BYNf",GoogleMapSloppy:"ATObVg",googleMapSloppy:"ATObVg",brd:"CV2IPZ",one:"l3mQRd",two:"NlKT7Q",GoogleMapLiftedShadow:"aMqF6e",googleMapLiftedShadow:"aMqF6e",shd:"OQGVRy",left:"tlWGDF",right:"U1VCL6"};const B={GoogleMapLiftedShadow:()=>n.createElement(n.Fragment,null,n.createElement("div",{className:i(z.left,z.shd)}),n.createElement("div",{className:i(z.right,z.shd)})),GoogleMapSloppy:()=>n.createElement(n.Fragment,null,n.createElement("div",{className:i(z.brd,z.one)}),n.createElement("div",{className:i(z.brd,z.two)})),GoogleMapSkin:()=>n.createElement(n.Fragment,null),GoogleMapDefault:()=>n.createElement(n.Fragment,null)};var j=r.p+"media/googleMap.1fabcae9.html",G=r.p+"media/google-map.min.a2c68bb4.js";const Z=(e,t)=>{const{id:o,className:r,customClassNames:a=[],skin:l,urlQueries:u,mapData:p,translations:m,isConsentPolicyActive:g,onUpdateCenter:h,onUpdateZoom:v,onMarkerClicked:y,onMapClicked:b,onMouseEnter:C,onMouseLeave:E,isEditorMode:M,language:w,onMapMount:k,lang:S,hasFocus:O}=e,L=B[l],I=((e,t)=>{const n=new URLSearchParams({googleMapsScriptPath:new URL(G).pathname});return s()&&n.append("origin",window.origin),void 0!==t&&n.append("hasFocus",t.toString()),j+"?"+e+"&"+n})(u,O),[T,P]=n.useState(!1),[N]=F(t,{mapData:p,isEditorMode:M,language:w},{onUpdateCenter:h,onUpdateZoom:v,onMarkerClicked:y,onMapClicked:b});n.useEffect(()=>{P(!0)},[I]),n.useEffect(()=>{null==k||k()},[k]);const _=m.title,x=((e,t)=>e?{}:t)(g,{id:o,className:i(z[l],z.wixIframe,r,d(f.root,...a)),...c(e),lang:S});return n.createElement("div",x,T&&n.createElement("wix-iframe",{"data-src":I},n.createElement(L,null),n.createElement("div",{id:"mapContainer_"+o,onMouseEnter:C,onMouseLeave:E,className:z.mapContainer},n.createElement("iframe",{ref:N,title:_,"data-src":I,width:"100%",height:"100%",frameBorder:"0",scrolling:"no",allowFullScreen:!0}))))};var H=n.forwardRef(Z),W={mapContainer:"zf7Baq"};var U=(0,n.forwardRef)((e,n)=>{const{id:r,className:a,skin:l,customClassNames:s=[],translations:u,lang:p,onMouseEnter:m,onMouseLeave:g,MapContent:h}=e,v={id:r,className:i(W[l],a,d(f.root,...s)),...c(e),lang:p};return o().createElement("div",t()({},v,{onMouseEnter:m,onMouseLeave:g}),o().createElement("div",{className:W.mapContainer,"aria-label":u.title,role:"region"},o().createElement(h,t()({},e,{ref:n}))))}),V=r("NUjG"),J=r("oGPa");function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;tgoogle.maps.importLibrary(e)))}static serializeParams(e){return[e.v,e.key,e.language,e.region,e.authReferrerPolicy,e.solutionChannel].join("/")}static initImportLibrary(e){if(window.google||(window.google={}),window.google.maps||(window.google.maps={}),window.google.maps.importLibrary)return void console.error("[google-maps-api-loader-internal]: initImportLibrary must only be called once");let t=null;const n=()=>t||(t=new Promise((t,n)=>{var o;const r=document.createElement("script"),a=new URLSearchParams;for(const[t,n]of Object.entries(e)){const e=t.replace(/[A-Z]/g,e=>"_"+e[0].toLowerCase());a.set(e,String(n))}a.set("loading","async"),a.set("callback","__googleMapsCallback__"),r.async=!0,r.src="https://maps.googleapis.com/maps/api/js?"+a.toString(),r.nonce=(null==(o=document.querySelector("script[nonce]"))?void 0:o.nonce)||"",r.onerror=()=>{this.loadingStatus=ee,this.notifyLoadingStatusListeners(),n(new Error("The Google Maps JavaScript API could not load."))},window.__googleMapsCallback__=()=>{this.loadingStatus=X,this.notifyLoadingStatusListeners(),t()},window.gm_authFailure=()=>{this.loadingStatus=te,this.notifyLoadingStatusListeners()},this.loadingStatus=Q,this.notifyLoadingStatusListeners(),document.head.append(r)}),t);google.maps.importLibrary=e=>n().then(()=>google.maps.importLibrary(e))}static notifyLoadingStatusListeners(){for(const e of this.listeners)e(this.loadingStatus)}}ne.loadingStatus=Y,ne.serializedApiParams=void 0,ne.listeners=[];const oe=["onLoad","onError","apiKey","version","libraries"],re=["children"],ae=n.createContext(null);const le=e=>{const{children:t}=e,o=$(e,re),{mapInstances:r,addMapInstance:a,removeMapInstance:l,clearMapInstances:i}=function(){const[e,t]=(0,n.useState)({});return{mapInstances:e,addMapInstance:(e,n="default")=>{t(t=>K({},t,{[n]:e}))},removeMapInstance:(e="default")=>{t(t=>$(t,[e].map(q)))},clearMapInstances:()=>{t({})}}}(),{status:s,loadedLibraries:c,importLibrary:u}=function(e){const{onLoad:t,onError:o,apiKey:r,version:a,libraries:l=[]}=e,i=$(e,oe),[s,c]=(0,n.useState)(ne.loadingStatus),[u,d]=(0,n.useReducer)((e,t)=>e[t.name]?e:K({},e,{[t.name]:t.value}),{}),p=(0,n.useMemo)(()=>null==l?void 0:l.join(","),[l]),m=(0,n.useMemo)(()=>JSON.stringify(K({apiKey:r,version:a},i)),[r,a,i]),f=(0,n.useCallback)(async e=>{var t;if(u[e])return u[e];if(null==(t=google)||null==(t=t.maps)||!t.importLibrary)throw new Error("[api-provider-internal] importLibrary was called before google.maps.importLibrary was defined.");const n=await window.google.maps.importLibrary(e);return d({name:e,value:n}),n},[u]);return(0,n.useEffect)(()=>{(async()=>{try{const e=K({key:r},i);a&&(e.v=a),(null==p?void 0:p.length)>0&&(e.libraries=p),(void 0===e.channel||e.channel<0||e.channel>999)&&delete e.channel,void 0===e.solutionChannel?e.solutionChannel="GMP_visgl_rgmlibrary_v1_default":""===e.solutionChannel&&delete e.solutionChannel,await ne.load(e,e=>c(e));for(const e of["core","maps",...l])await f(e);t&&t()}catch(e){o?o(e):console.error(" failed to load the Google Maps JavaScript API",e)}})()},[r,p,m]),{status:s,loadedLibraries:u,importLibrary:f}}(o),d=(0,n.useMemo)(()=>({mapInstances:r,addMapInstance:a,removeMapInstance:l,clearMapInstances:i,status:s,loadedLibraries:c,importLibrary:u}),[r,a,l,i,s,c,u]);return n.createElement(ae.Provider,{value:d},t)};function ie(e,t,n){const o={type:e,map:t,detail:{},stoppable:!1,stop:()=>{}};if(ce.includes(e)){const e=o,n=t.getCenter(),r=t.getZoom(),a=t.getHeading()||0,l=t.getTilt()||0,i=t.getBounds();return n&&i&&Number.isFinite(r)||console.warn("[createEvent] at least one of the values from the map returned undefined. This is not expected to happen. Please report an issue at https://github.com/visgl/react-google-maps/issues/new"),e.detail={center:(null==n?void 0:n.toJSON())||{lat:0,lng:0},zoom:r||0,heading:a,tilt:l,bounds:(null==i?void 0:i.toJSON())||{north:90,east:180,south:-90,west:-180}},e}if(ue.includes(e)){var r;if(!n)throw new Error("[createEvent] mouse events must provide a srcEvent");const e=o;return e.domEvent=n.domEvent,e.stoppable=!0,e.stop=()=>n.stop(),e.detail={latLng:(null==(r=n.latLng)?void 0:r.toJSON())||null,placeId:n.placeId},e}return o}const se={onBoundsChanged:"bounds_changed",onCenterChanged:"center_changed",onClick:"click",onContextmenu:"contextmenu",onDblclick:"dblclick",onDrag:"drag",onDragend:"dragend",onDragstart:"dragstart",onHeadingChanged:"heading_changed",onIdle:"idle",onIsFractionalZoomEnabledChanged:"isfractionalzoomenabled_changed",onMapCapabilitiesChanged:"mapcapabilities_changed",onMapTypeIdChanged:"maptypeid_changed",onMousemove:"mousemove",onMouseout:"mouseout",onMouseover:"mouseover",onProjectionChanged:"projection_changed",onRenderingTypeChanged:"renderingtype_changed",onTilesLoaded:"tilesloaded",onTiltChanged:"tilt_changed",onZoomChanged:"zoom_changed",onCameraChanged:"bounds_changed"},ce=["bounds_changed","center_changed","heading_changed","tilt_changed","zoom_changed"],ue=["click","contextmenu","dblclick","mousemove","mouseout","mouseover"],de=Object.keys(se);function pe(e,t){const o=(0,n.useRef)(void 0);o.current&&J(t,o.current)||(o.current=t),(0,n.useEffect)(e,o.current)}const me=new Set(["backgroundColor","clickableIcons","controlSize","disableDefaultUI","disableDoubleClickZoom","draggable","draggableCursor","draggingCursor","fullscreenControl","fullscreenControlOptions","gestureHandling","headingInteractionEnabled","isFractionalZoomEnabled","keyboardShortcuts","mapTypeControl","mapTypeControlOptions","mapTypeId","maxZoom","minZoom","noClear","panControl","panControlOptions","restriction","rotateControl","rotateControlOptions","scaleControl","scaleControlOptions","scrollwheel","streetView","streetViewControl","streetViewControlOptions","styles","tiltInteractionEnabled","zoomControl","zoomControlOptions"]);function fe(){var e;return(null==(e=(0,n.useContext)(ae))?void 0:e.status)||Y}function ge(e){return function(e){return!(!e||"object"!=typeof e)&&"lat"in e&&"lng"in e&&Number.isFinite(e.lat)&&Number.isFinite(e.lng)}(e)?e:e.toJSON()}const he=()=>n.createElement("div",{style:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:999,display:"flex",flexFlow:"column nowrap",textAlign:"center",justifyContent:"center",fontSize:".8rem",color:"rgba(0,0,0,0.6)",background:"#dddddd",padding:"1rem 1.5rem"}},n.createElement("h2",null,"Error: AuthFailure"),n.createElement("p",null,"A problem with your API key prevents the map from rendering correctly. Please make sure the value of the ",n.createElement("code",null,"APIProvider.apiKey")," prop is correct. Check the error-message in the console for further details."));function ve(){return fe()===X}function ye(e){const t=function(){const[,e]=(0,n.useReducer)(e=>e+1,0);return e}(),o=(0,n.useRef)({center:{lat:0,lng:0},heading:0,tilt:0,zoom:0});return(0,n.useEffect)(()=>{if(!e)return;const n=google.maps.event.addListener(e,"bounds_changed",()=>{!function(e,t){const n=e.getCenter(),o=e.getZoom(),r=e.getHeading()||0,a=e.getTilt()||0,l=e.getBounds();n&&l&&Number.isFinite(o)||console.warn("[useTrackedCameraState] at least one of the values from the map returned undefined. This is not expected to happen. Please report an issue at https://github.com/visgl/react-google-maps/issues/new"),Object.assign(t.current,{center:(null==n?void 0:n.toJSON())||{lat:0,lng:0},zoom:o||0,heading:r,tilt:a})}(e,o),t()});return()=>n.remove()},[e,t]),o}const be=["id","defaultBounds","defaultCenter","defaultZoom","defaultHeading","defaultTilt","reuseMaps","renderingType","colorScheme"],Ce=["padding"];class Ee{static has(e){return this.entries[e]&&this.entries[e].length>0}static pop(e){return this.entries[e]&&this.entries[e].pop()||null}static push(e,t){this.entries[e]||(this.entries[e]=[]),this.entries[e].push(t)}}function Me(e,t){const o=ve(),[r,a]=(0,n.useState)(null),[l,i]=function(){const[e,t]=(0,n.useState)(null);return[e,(0,n.useCallback)(e=>t(e),[t])]}(),s=ye(r),{id:c,defaultBounds:u,defaultCenter:d,defaultZoom:p,defaultHeading:m,defaultTilt:f,reuseMaps:g,renderingType:h,colorScheme:v}=e,y=$(e,be),b=void 0!==e.zoom||void 0!==e.defaultZoom,C=void 0!==e.center||void 0!==e.defaultCenter;u||b&&C||console.warn(" component is missing configuration. You have to provide zoom and center (via the `zoom`/`defaultZoom` and `center`/`defaultCenter` props) or specify the region to show using `defaultBounds`. See https://visgl.github.io/react-google-maps/docs/api-reference/components/map#required"),!y.center&&d&&(y.center=d),!y.zoom&&Number.isFinite(p)&&(y.zoom=p),!y.heading&&Number.isFinite(m)&&(y.heading=m),!y.tilt&&Number.isFinite(f)&&(y.tilt=f);for(const e of Object.keys(y))void 0===y[e]&&delete y[e];const E=(0,n.useRef)(void 0);return(0,n.useEffect)(()=>{if(!l||!o)return;const{addMapInstance:n,removeMapInstance:r}=t,{mapId:i}=e,d=`${i||"default"}:${h||"default"}:${v||"LIGHT"}`;let p,m;if(g&&Ee.has(d)?(m=Ee.pop(d),p=m.getDiv(),l.appendChild(p),m.setOptions(y),setTimeout(()=>m.setCenter(m.getCenter()),0)):(p=document.createElement("div"),p.style.height="100%",l.appendChild(p),m=new google.maps.Map(p,K({},y,h?{renderingType:h}:{},v?{colorScheme:v}:{}))),a(m),n(m,c),u){const{padding:e}=u,t=$(u,Ce);m.fitBounds(t,e)}else b&&C||m.fitBounds({east:180,west:-180,south:-90,north:90});if(E.current){const{mapId:e,cameraState:t}=E.current;e!==i&&m.setOptions(t)}return()=>{E.current={mapId:i,cameraState:s.current},p.remove(),g?Ee.push(d,m):google.maps.event.clearInstanceListeners(m),a(null),r(c)}},[l,o,c,e.mapId,e.renderingType,e.colorScheme]),[r,i,s]}Ee.entries={};const we=n.createContext(null),ke=e=>{const{children:t,id:o,className:r,style:a}=e,l=(0,n.useContext)(ae),i=fe();if(!l)throw new Error(" can only be used inside an component.");const[s,c,u]=Me(e,l);!function(e,t,o){const r=o.center?ge(o.center):null;let a=null,l=null;r&&Number.isFinite(r.lat)&&Number.isFinite(r.lng)&&(a=r.lat,l=r.lng);const i=Number.isFinite(o.zoom)?o.zoom:null,s=Number.isFinite(o.heading)?o.heading:null,c=Number.isFinite(o.tilt)?o.tilt:null;(0,n.useLayoutEffect)(()=>{if(!e)return;const n={};let o=!1;null===a||null===l||t.current.center.lat===a&&t.current.center.lng===l||(n.center={lat:a,lng:l},o=!0),null!==i&&t.current.zoom!==i&&(n.zoom=i,o=!0),null!==s&&t.current.heading!==s&&(n.heading=s,o=!0),null!==c&&t.current.tilt!==c&&(n.tilt=c,o=!0),o&&e.moveCamera(n)})}(s,u,e),function(e,t){for(const o of de){const r=t[o],a=se[o];(0,n.useEffect)(()=>{if(!e)return;if(!r)return;const t=google.maps.event.addListener(e,a,t=>{r(ie(a,e,t))});return()=>t.remove()},[e,a,r])}}(s,e),function(e,t){const n={},o=Object.keys(t);for(const e of o)me.has(e)&&(n[e]=t[e]);pe(()=>{e&&e.setOptions(n)},[n])}(s,e);const d=function(e,t){const{viewport:o,viewState:r}=t,a=!!o;return(0,n.useLayoutEffect)(()=>{if(!e||!r)return;const{latitude:t,longitude:n,bearing:o,pitch:a,zoom:l}=r;e.moveCamera({center:{lat:t,lng:n},heading:o,tilt:a,zoom:l+1})},[e,r]),a}(s,e),p=!!e.controlled;(0,n.useEffect)(()=>{if(s)return d&&s.setOptions({disableDefaultUI:!0}),(d||p)&&s.setOptions({gestureHandling:"none",keyboardShortcuts:!1}),()=>{s.setOptions({gestureHandling:e.gestureHandling,keyboardShortcuts:e.keyboardShortcuts})}},[s,d,p,e.gestureHandling,e.keyboardShortcuts]);const m=e.center?ge(e.center):null;let f=null,g=null;m&&Number.isFinite(m.lat)&&Number.isFinite(m.lng)&&(f=m.lat,g=m.lng);const h=(0,n.useMemo)(()=>{var t,n,o,r,a;return{center:{lat:null!=(t=f)?t:0,lng:null!=(n=g)?n:0},zoom:null!=(o=e.zoom)?o:0,heading:null!=(r=e.heading)?r:0,tilt:null!=(a=e.tilt)?a:0}},[f,g,e.zoom,e.heading,e.tilt]);(0,n.useLayoutEffect)(()=>{if(!s||!p)return;s.moveCamera(h);const e=s.addListener("bounds_changed",()=>{s.moveCamera(h)});return()=>e.remove()},[s,p,h]);const v=(0,n.useMemo)(()=>K({width:"100%",height:"100%",position:"relative",zIndex:d?-1:0},a),[a,d]),y=(0,n.useMemo)(()=>({map:s}),[s]);return i===te?n.createElement("div",{style:K({position:"relative"},r?{}:v),className:r},n.createElement(he,null)):n.createElement("div",K({ref:c,"data-testid":"map",style:r?void 0:v,className:r},o?{id:o}:{}),s?n.createElement(we.Provider,{value:y},t):null)};ke.deckGLViewProps=!0;const Se=new Set;function Oe(...e){const t=JSON.stringify(e);Se.has(t)||(Se.add(t),console.error(...e))}const Le=(e=null)=>{const t=(0,n.useContext)(ae),{map:o}=(0,n.useContext)(we)||{};if(null===t)return Oe("useMap(): failed to retrieve APIProviderContext. Make sure that the component exists and that the component you are calling `useMap()` from is a sibling of the ."),null;const{mapInstances:r}=t;return null!==e?r[e]||null:o||(r.default||null)};function Ie(e){const t=ve(),o=(0,n.useContext)(ae);return(0,n.useEffect)(()=>{t&&o&&o.importLibrary(e)},[t,o,e]),(null==o?void 0:o.loadedLibraries[e])||null}function Te(e,t,o){(0,n.useEffect)(()=>{if(!e||!t||!o)return;const n=google.maps.event.addListener(e,t,o);return()=>n.remove()},[e,t,o])}function Pe(e,t,o){(0,n.useEffect)(()=>{e&&(e[t]=o)},[e,t,o])}function Ne(e,t,o){(0,n.useEffect)(()=>{if(e&&t&&o)return e.addEventListener(t,o),()=>e.removeEventListener(t,o)},[e,t,o])}const _e=n.createContext(null),xe={TOP_LEFT:["0%","0%"],TOP_CENTER:["50%","0%"],TOP:["50%","0%"],TOP_RIGHT:["100%","0%"],LEFT_CENTER:["0%","50%"],LEFT_TOP:["0%","0%"],LEFT:["0%","50%"],LEFT_BOTTOM:["0%","100%"],RIGHT_TOP:["100%","0%"],RIGHT:["100%","50%"],RIGHT_CENTER:["100%","50%"],RIGHT_BOTTOM:["100%","100%"],BOTTOM_LEFT:["0%","100%"],BOTTOM_CENTER:["50%","100%"],BOTTOM:["50%","100%"],BOTTOM_RIGHT:["100%","100%"],CENTER:["50%","50%"]},Re=({children:e,styles:t,className:o,anchorPoint:r})=>{const[a,l]=null!=r?r:xe.BOTTOM;let i=`-${a}`,s=`-${l}`;a.trimStart().startsWith("-")&&(i=a.substring(1)),l.trimStart().startsWith("-")&&(s=l.substring(1));const c=`translate(50%, 100%) translate(${i}, ${s})`;return n.createElement("div",{style:{transform:c}},n.createElement("div",{className:o,style:t},e))};function Ae(e){const[t,o]=(0,n.useState)(null),[r,a]=(0,n.useState)(null),l=Le(),i=Ie("marker"),{children:s,onClick:c,className:u,onMouseEnter:d,onMouseLeave:p,onDrag:m,onDragStart:f,onDragEnd:g,collisionBehavior:h,clickable:v,draggable:y,position:b,title:C,zIndex:E}=e,M=n.Children.count(s);return(0,n.useEffect)(()=>{if(!l||!i)return;const e=new i.AdvancedMarkerElement;e.map=l,o(e);let t=null;return M>0&&(t=document.createElement("div"),t.isCustomMarker=!0,e.content=t,a(t)),()=>{var n;e.map=null,null==(n=t)||n.remove(),o(null),a(null)}},[l,i,M]),(0,n.useEffect)(()=>{!t||!t.content||M>0||(t.content.className=u||"")},[t,u,M]),Pe(t,"position",b),Pe(t,"title",null!=C?C:""),Pe(t,"zIndex",E),Pe(t,"collisionBehavior",h),(0,n.useEffect)(()=>{t&&(t.gmpDraggable=void 0!==y?y:!!(m||f||g))},[t,y,m,g,f]),(0,n.useEffect)(()=>{if(!t)return;const e=void 0!==v||Boolean(c)||Boolean(d)||Boolean(p);t.gmpClickable=e,e&&null!=t&&t.content&&t.content.nodeType===Node.ELEMENT_NODE&&(t.content.style.pointerEvents="none",t.content.firstElementChild&&(t.content.firstElementChild.style.pointerEvents="all"))},[t,v,c,d,p]),Te(t,"click",c),Te(t,"drag",m),Te(t,"dragstart",f),Te(t,"dragend",g),Ne(null==t?void 0:t.element,"mouseenter",d),Ne(null==t?void 0:t.element,"mouseleave",p),[t,r]}const De=(0,n.forwardRef)((e,t)=>{const{children:o,style:r,className:a,anchorPoint:l}=e,[i,s]=Ae(e),c=(0,n.useMemo)(()=>i?{marker:i}:null,[i]);return(0,n.useImperativeHandle)(t,()=>i,[i]),s?n.createElement(_e.Provider,{value:c},(0,V.createPortal)(n.createElement(Re,{anchorPoint:l,styles:r,className:a},o),s)):null});function Fe(e,t,n){const o=0===t.indexOf("--");var r;null==n||"boolean"==typeof n||""===n?o?e.setProperty(t,""):"float"===t?e.cssFloat="":e[t]="":o?e.setProperty(t,n):"number"!=typeof n||0===n||(r=t,ze.has(r))?"float"===t?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}const ze=new Set(["animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);const Be=["children","headerContent","style","className","pixelOffset","anchor","shouldFocus","onClose","onCloseClick"],je=e=>{const{children:t,headerContent:o,style:r,className:a,pixelOffset:l,anchor:i,shouldFocus:s,onClose:c,onCloseClick:u}=e,d=$(e,Be),p=Ie("maps"),[m,f]=(0,n.useState)(null),g=(0,n.useRef)(null),h=(0,n.useRef)(null);(0,n.useEffect)(()=>{if(!p)return;g.current=document.createElement("div"),h.current=document.createElement("div");const e=d;l&&(e.pixelOffset=new google.maps.Size(l[0],l[1])),o&&(e.headerContent="string"==typeof o?o:h.current);const t=new google.maps.InfoWindow(d);return t.setContent(g.current),f(t),()=>{var e,n;t.setContent(null),null==(e=g.current)||e.remove(),null==(n=h.current)||n.remove(),g.current=null,h.current=null,f(null)}},[p]);const v=(0,n.useRef)(null);(0,n.useEffect)(()=>{m&&g.current&&(!function(e,t,n){if(null!=t&&"object"!=typeof t)throw new Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");const o=e.style;if(null!=n){for(const e in n)!n.hasOwnProperty(e)||null!=t&&t.hasOwnProperty(e)||(0===e.indexOf("--")?o.setProperty(e,""):"float"===e?o.cssFloat="":o[e]="");if(null!=t)for(const e in t){const r=t[e];t.hasOwnProperty(e)&&n[e]!==r&&Fe(o,e,r)}}else{if(null==t)return;for(const e in t)t.hasOwnProperty(e)&&Fe(o,e,t[e])}}(g.current,r||null,v.current),v.current=r||null,a!==g.current.className&&(g.current.className=a||""))},[m,a,r]),pe(()=>{if(!m)return;const e=d;e.pixelOffset=l?new google.maps.Size(l[0],l[1]):null,e.headerContent=o?"string"==typeof o?o:h.current:null,m.setOptions(d)},[d,l,o]),Te(m,"close",c),Te(m,"closeclick",u);const y=Le();return pe(()=>{if(!y||!m||null===i)return;const e=!!i,t={map:y};if(i&&(t.anchor=i,void 0!==i.content&&i.content instanceof Element)){const e=i.content,t=null==e?void 0:e.getBoundingClientRect();if(t&&null!=e&&e.isCustomMarker){var n;const e=null==(n=i.content.firstElementChild)?void 0:n.firstElementChild,o=null==e?void 0:e.getBoundingClientRect(),r=o.x-t.x+(o.width-t.width)/2,a=o.y-t.y,s=d;s.pixelOffset=new google.maps.Size(l?l[0]+r:r,l?l[1]+a:a),m.setOptions(s)}}return void 0!==s&&(t.shouldFocus=s),m.open(t),()=>{e&&m.set("anchor",null),m.close()}},[m,i,y,s,d,l]),n.createElement(n.Fragment,null,g.current&&(0,V.createPortal)(t,g.current),null!==h.current&&(0,V.createPortal)(o,h.current))};const Ge=["onClick","onDrag","onDragStart","onDragEnd","onMouseOver","onMouseOut"];(0,n.forwardRef)((e,t)=>{const o=function(e){const[t,o]=(0,n.useState)(null),r=Le(),{onClick:a,onDrag:l,onDragStart:i,onDragEnd:s,onMouseOver:c,onMouseOut:u}=e,d=$(e,Ge),{position:p,draggable:m}=d;return(0,n.useEffect)(()=>{if(!r)return void(void 0===r&&console.error(" has to be inside a Map component."));const e=new google.maps.Marker(d);return e.setMap(r),o(e),()=>{e.setMap(null),o(null)}},[r]),(0,n.useEffect)(()=>{if(!t)return;const e=t,n=google.maps.event;return a&&n.addListener(e,"click",a),l&&n.addListener(e,"drag",l),i&&n.addListener(e,"dragstart",i),s&&n.addListener(e,"dragend",s),c&&n.addListener(e,"mouseover",c),u&&n.addListener(e,"mouseout",u),t.setDraggable(Boolean(m)),()=>{n.clearInstanceListeners(e)}},[t,m,a,l,i,s,c,u]),(0,n.useEffect)(()=>{t&&d&&t.setOptions(d)},[t,d]),(0,n.useEffect)(()=>{!m&&p&&t&&t.setPosition(p)},[m,p,t]),t}(e);return(0,n.useImperativeHandle)(t,()=>o,[o]),n.createElement(n.Fragment,null)});var Ze="kNBbt1",He="FkxTlw",We="s0p_l4",Ue="_z0Thl",Ve="ELGmg6";const Je="97492c268b484efea51bbdb0",Ke="CLASSIC",$e="SNOWWHITE",qe="GRAYSCALE",Ye="SATELLITE",Qe={[Ke]:Je,[$e]:"97492c268b484efca25c0674",[qe]:"97492c268b484eff57e02cb3",[Ye]:Je},Xe={[Ke]:"ROADMAP",[$e]:"ROADMAP",[qe]:"ROADMAP",[Ye]:"HYBRID"},et="marker-svg",tt="marker-link",nt="marker-directions-link",ot=e=>0===e||!!e,rt=e=>null!=e&&e>=0&&e<=20,at=e=>{var o;let{location:r,infoWindowOpen:a,onMarkerClick:l,onInfoWindowClose:i,showDirectionLink:s,allyTargetBlankDescription:c}=e;const u=(e=>{if(!e||!e.address)return;const t=new URL("https://www.google.com/maps/dir/");return t.searchParams.set("api","1"),t.searchParams.set("destination",e.address),t.toString()})(r),{isLinkValid:d,anchorProps:p}=(e=>{const t=null==e?void 0:e.locationLinkAttributes,n=t&&"object"==typeof t&&"href"in t&&"string"==typeof t.href&&t.href,o=n?{href:t.href,..."target"in t&&"string"==typeof t.target&&t.target?{target:t.target}:{},..."rel"in t&&"string"==typeof t.rel&&t.rel?{rel:t.rel}:{}}:{};return{isLinkValid:Boolean(n),anchorProps:o}})(r);if(!r||!ot(r.longitude)||!ot(r.latitude))return null;const m={lat:Number(r.latitude),lng:Number(r.longitude)},f=r.pinIcon&&n.createElement("div",{"aria-hidden":!0,dangerouslySetInnerHTML:{__html:r.pinIcon},"data-testid":et,className:Ue}),g=n.createElement("div",null,r.description&&n.createElement("p",{className:He},r.description),r.linkTitle&&d&&n.createElement("a",t()({className:We},p,{"data-testid":tt}),r.linkTitle,"_blank"===(null==(o=r.locationLinkAttributes)?void 0:o.target)&&c&&n.createElement("span",{className:Ve},c)),s&&u&&n.createElement("a",{href:u,target:"_blank",rel:"noopener noreferrer",className:We,"data-testid":nt,"aria-label":r.directionTitle+". "+c},r.directionTitle));return n.createElement(n.Fragment,null,n.createElement(De,{position:m,title:r.title,onClick:()=>{var e;null==l||l({type:"markerClicked",address:r.address,location:{latitude:r.latitude||0,longitude:r.longitude||0},icon:r.pinIcon||"",link:null==(e=r.locationLinkAttributes)?void 0:e.href,title:r.title,linkTitle:r.linkTitle,description:r.description})}},f),a&&n.createElement(je,{position:m,pixelOffset:[0,-32],shouldFocus:!1,maxWidth:300,minWidth:228,headerContent:r.title&&n.createElement("h2",{className:Ze},r.title),onCloseClick:i,disableAutoPan:!0},g))};var lt=n.memo(at);const it=(e,t,n,o)=>{const r=((e,t,n)=>({setMapCenter:(t,o)=>{const r={lat:o,lng:t};return e.current&&r&&(e.current.setCenter(r),n(r)),Promise.resolve()},setMapZoom:n=>(e.current&&rt(n)&&(e.current.setZoom(n),t(n)),Promise.resolve()),fitBounds:o=>{if(e.current){const r=new google.maps.LatLngBounds({lat:o.south,lng:o.west},{lat:o.north,lng:o.east});e.current.fitBounds(r);const a=e.current.getCenter(),l=e.current.getZoom();a&&rt(l)&&(t(l),n({lat:a.lat(),lng:a.lng()}))}return Promise.resolve()},setMarkers:e=>Promise.resolve(),getVisibleMarkers:t=>{if(e.current){const n=e.current.getBounds();if(n){const e=t.filter(e=>{const t=new google.maps.LatLng(e.latitude,e.longitude);return n.contains(t)}).map(e=>({title:e.title,location:{latitude:e.latitude,longitude:e.longitude}}));return Promise.resolve(e)}}return Promise.resolve(t.map(e=>({title:e.title,location:{latitude:e.latitude,longitude:e.longitude}})))},setMarkerIcon:e=>Promise.resolve()}))(e,t,n);return{setMapCenter:(e,t)=>r.setMapCenter(e,t),setMapZoom:e=>r.setMapZoom(e),fitBounds:e=>r.fitBounds(e),setMarkers:e=>r.setMarkers(e),setMarkerIcon:e=>r.setMarkerIcon(e),getVisibleMarkers:()=>r.getVisibleMarkers(o),getCenter:()=>{if(e.current&&e.current.getCenter){const t=e.current.getCenter();if(t)return{lat:()=>t.lat(),lng:()=>t.lng()}}return{lat:()=>0,lng:()=>0}},getZoom:()=>{if(e.current&&e.current.getZoom){const t=e.current.getZoom();return void 0!==t?t:14}return 14}}};function st(e,t){return Boolean(e.title||e.description||e.linkTitle||e.locationLinkAttributes||t.showDirectionsLink)}const ct=(0,n.forwardRef)((e,r)=>{const{id:a,mapData:l,translations:i,onUpdateCenter:s,onUpdateZoom:c,onMarkerClicked:u,onMapClicked:d,onMapMount:p}=e,m=Le(),f=(0,n.useRef)(m);(0,n.useEffect)(()=>{f.current=m},[m]);const g=(0,n.useMemo)(()=>rt(l.zoom)&&l.zoom||14,[l.zoom]);(0,n.useEffect)(()=>null==m?void 0:m.setZoom(g),[g,m]);const h=(0,n.useMemo)(()=>l.defaultLocation>=0&&l.locations&&l.defaultLocation{var e,t;if(!l.locations||0===l.locations.length)return{lat:0,lng:0};const n=l.locations[h];return{lat:null!=(e=null==n?void 0:n.latitude)?e:0,lng:null!=(t=null==n?void 0:n.longitude)?t:0}},[l.locations,h]);(0,n.useEffect)(()=>null==m?void 0:m.setCenter(v),[v,m]);const[y,b]=(0,n.useState)(h);(0,n.useEffect)(()=>b(h),[h]);const C=(0,n.useCallback)(e=>{rt(e)&&(null==c||c({zoom:e}))},[c]),E=(0,n.useCallback)(e=>{e&&(null==s||s({latitude:e.lat,longitude:e.lng}))},[s]),M=(0,n.useCallback)(e=>{try{d&&e.detail.latLng&&d({type:"mapClicked",location:{latitude:e.detail.latLng.lat,longitude:e.detail.latLng.lng}})}catch(e){console.error("GoogleMap: Click handler error",{error:e instanceof Error?e.message:String(e),componentId:a})}},[d,a]),w=e=>t=>{b(y===e?null:e),null==u||u(t)};(0,n.useImperativeHandle)(r,()=>it(f,C,E,l.locations),[C,E,l.locations]),(0,n.useEffect)(()=>{null==p||p()},[p]);const k=(0,n.useMemo)(()=>{const e=l.mapStyleKey;return{mapId:Qe[e]||Qe.CLASSIC,mapTypeId:(Xe[e]||Xe.CLASSIC).toLowerCase()}},[l.mapStyleKey]),S=(0,n.useMemo)(()=>({fullscreenControl:!1,clickableIcons:!0,keyboardShortcuts:!0,disableDoubleClickZoom:!1,disableDefaultUI:!0,gestureHandling:l.mapInteractive?"auto":"none",mapTypeControl:l.showMapType,zoomControl:l.showZoom,streetViewControl:l.showStreetView}),[l.mapInteractive,l.showMapType,l.showZoom,l.showStreetView]);return o().createElement(ke,t()({onCenterChanged:e=>E(e.detail.center),onZoomChanged:e=>C(e.detail.zoom),onClick:M,style:{width:"100%",height:"100%"},defaultCenter:v,defaultZoom:g,reuseMaps:!0},S,k),l.locations.map((e,t)=>o().createElement(lt,{key:t+"-"+e.latitude+"-"+e.longitude,location:e,infoWindowOpen:y===t&&st(e,l),onMarkerClick:w(t),onInfoWindowClose:()=>b(null),showDirectionLink:l.showDirectionsLink,allyTargetBlankDescription:i.allyTargetBlankDescription})))}),ut=(0,n.forwardRef)((e,n)=>o().createElement(le,{apiKey:"AIzaSyCu6mU4lWgbxynxwy3yYJZcEZKO0QYnFu4",language:e.language},o().createElement(ct,t()({},e,{ref:n}))));var dt=(0,n.memo)(ut);const pt=(e,o)=>{const{isReactGoogleMap:r,...a}=e;return r?n.createElement(U,t()({},a,{ref:o,MapContent:dt})):n.createElement(H,t()({},a,{ref:o}))};var mt;const ft={GoogleMap:{component:n.forwardRef(pt),controller:(mt=e=>{let{stateValues:t,mapperProps:n}=e;return{...n,...m(t)}},{useComponentProps:(e,t,n)=>{const o=(e=>({...e,updateStyles:t=>{const n=Object.entries(t).reduce((e,[t,n])=>{return{...e,[(o=t,o.startsWith("--")?t:p(t))]:void 0===n?null:n};var o},{});e.updateStyles(n)}}))(n);return mt({mapperProps:e,stateValues:t,controllerUtils:o})}})}}}(),a}()}); //# sourceMappingURL=https://static.parastorage.com/services/editor-elements-library/dist/thunderbolt/rb_wixui.thunderbolt[GoogleMap].525641d6.bundle.min.js.map